﻿;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; FORTIFICATION SCRIPT (Handle AI Planning)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; USAGE:
;
; Basic structure of an AI planning event:
; { 
; #NAME= Event name (this will be shown as a selectable event under an OPTIONS screen within the game)
; #POPUP= Event popup text (this will be displayed when the event occurs)
; #FLAG= Will this be a default event for the campaign? (values range [0, 1]; True= 1; False= 0)
; #TYPE= Values range [0, 3];
;        With all other fields satisfied will this be:
;        0 = Single check regardless if #TRIGGER is satisfied
;        1 = Multiple check until #TRIGGER is satisfied
;        2 = Reoccuring check until end of game
;                       OR
;        Once the #DATE field is satisfied:
;        3 = Event fires once if all other fields are satisfied, else it will not fire.  Either way, event will be removed never to be looked at again
; #LEVEL= What minimum skill level, as selected from the AI difficulty level screen in game, with this event apply to?
;         Values: [0, 4]; Green= 0; Novice= 1; Intermediate= 2; Veteran= 3; Expert= 4
; #GV= Does the event activate based on the Global Variable values assigned?
;      Ten random Global Variables are assigned at the start of the campaign each with a value between [1,100]
;      Format: GV [min, max]; GV range [1,10]; min range [1,100]; max range [1,100]
;      Example A) #GV= 1[1,100] will always trigger because Global Variable #1 will always have a value between [1,100]
;      Example B) #GV= 4[71,100] will trigger 30% per game
; #LINK= Does the event activate based on the Link values assigned?
;        A campaign can have up to 1100 Decision events and is referenced by other events via this parameter
;        Format: decision[flag]; flag range [0, 1]; True= 1; False= 0
;        Example A) #LINK= 0[0] will always trigger as formal DECISION events can only be from 1-1100
;        Example B) #LINK= 1[0] will trigger whenever #DECISION= 1 is not accepted
;        Example C) #LINK= 3[1] will trigger whenever #DECISION= 3 is accepted
; #TRIGGER= Trigger percentage that the event will occur (values range [0, 100])
; #COUNTRY_ID= Country ID associated with this event
; #EDGE= What type of fortification edge should this event have? (See EDGE IDS below)
; #GOAL_POSITION= What is the map position that is the objective of this plan?
; #DATE= Date that must be satisfied (in game) for event to occur (format yyyy/mm/dd)
; #FRIENDLY_POSITION= Positions that must be under friendly control in order for event to occur
; #VARIABLE_CONDITION= Under what variable conditions will this event occur
;                      Format: country_id [political_alignment] [min_activation%] [surrendered_flag]
; #TACTICAL_CONDITION= Tactical map position (resource) that currently MUST NOT be threatened for event to
;                      occur, i.e. plan owner should have tactical advantage over this position
;                      Format: x,y [tactical_flag]
; #ACTIVATE_POSITION= Condition positions that will serve to ACTIVATE the event.
;                     Looks at distance as well as a selected number of Axis/Allied units as specified by 'alignment' flag
;                     Format: x,y [min_range, max_range] [min_units, max_units] [alignment]
; #CANCEL_POSITION= Condition positions that will serve to CANCEL the event.
;                   Looks at distance as well as a selected number of Axis/Allied units as specified by 'alignment' flag
;                   Format: x,y [min_range, max_range] [min_units, max_units] [alignment]
; }
;
; NOTES:
;
; Each event must be preceded by a '{' and end with a '}'
;
; Plan identity is determined by #COUNTRY_ID and #GOAL_POSITION.  A country can only have a
; single plan based on this criteria and will be assigned the first valid plan regardless of duplicate
; script entries (even if the remaining control '#' values are different).  
; Note:  This will also allow you to set up a variety of plans with the same identity but different 
; control '#' parameters where the first 'event' satisfied will be the fist plan assigned (for added variability).
;
; FORTIFICATION - FORTIFICATION plans are only cancelled either by #CANCEL_POSITION failure or the engineer has been
; forced to retreat.  If the #GOAL_POSITION already has a fortified tile the plan will be skipped.
;
; #GOAL_POSITION - Any land tile
;
; #FRIENDLY_POSITION - First position must refer to a land tile, subsequent positions can refer to either land or coastal tiles.
; Note:  More than one #FRIENDLY_POSITION can be set.  #FRIENDLY_POSITION refers to the current side associated with this 
;        plan.  Each #FRIENDLY_POSITION will be read using AND logic.
;
;        For all AI scripts that use the #FRIENDLY_POSITION field, the AI picks available units closest to and connected to
;        the first #FRIENDLY_POSITION, within #RANGE, and then sends them to the nearest available position for the script; 
;        e.g., a city for a GUARD script, a port for a TRANSPORT script, etc.  All AI scripts require that the first 
;        #FRIENDLY_POSITION be a land tile, with the exception of Fleet scripts.
;
; #VARIABLE_CONDITION - More than one #VARIABLE_CONDITION can be set.  Under #VARIABLE_CONDITION you can also list 
; countries that have not yet fully entered the war.  For example by listing an activation % less than 100% you
; are providing a check where the #VARIABLE_CONDITION country must meet a minimum activation % (but is
; not yet at 100%) in order for the event to occur.  To check for a fully activated country simply
; list the activation % at 100%.  Each #VARIABLE_CONDITION line will be read using AND logic.
;
; More than one #TACTICAL_CONDITION can be set.  #TACTICAL_CONDITION refers to the current side, i.e.
; country associated with this plan having tactical superiority over the specified map position.
; Tactical superiority can be fine tuned via the TACTICAL_ID flag.  Each #TACTICAL_CONDITION line will
; be read using AND logic.
; Note:  TACTICAL_ID= SEA implies that the port or city in question has an adjacent enemy unit in order for it
;        to be threatened.  For example a land locked city can never be threated by SEA so this can be used as a
;        dummy position.
;
; More than one #ACTIVATE_POSITION can be set.  Distance or range checks will be based on the
; specified x,y position.  For example if the x,y position is a coastal tile then range checks will
; be made on sea tiles, otherwise if it is a land tile range checks will be made on land tiles only.
; Each #ACTIVATE_POSITION line will be read using OR logic.
; Note: Once a plan has been properly activated then all references to #ACTIAVATE_POSITION are removed
;       from the plan as these conditions have been satisfied.  Use #CANCEL_POSITION to set the CANCEL conditions
;       based on unit positions for the event.
;
; More than one #CANCEL_POSITION can be set.  Distance or range checks will be based on the
; specified x,y position.  For example if the x,y position is a coastal tile then range checks will
; be made on sea tiles, otherwise if it is a land tile range checks will be made on land tiles only.
; Each #CANCEL_POSITION line will be read using OR logic.
;
; Use the reference values provided for #COUNTRY_ID and not the country names
; Use the reference values provided for TACTICAL_ID and not tactical names
; Use the reference values provided for POLITICAL ALIGNMENT and not names
; Use the reference values provided for SURRENDER flags and not names
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; COUNTRY ID REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Country IDs
; #COUNTRY_ID_0= Neutral
; #COUNTRY_ID_1= Armenia
; #COUNTRY_ID_2= Afghanistan
; #COUNTRY_ID_3= Albania
; #COUNTRY_ID_4= Algeria
; #COUNTRY_ID_5= Arabia
; #COUNTRY_ID_6= Australia
; #COUNTRY_ID_7= Austria
; #COUNTRY_ID_8= Austria-Hungary
; #COUNTRY_ID_9= Baltic Duchy
; #COUNTRY_ID_10= Belgium
; #COUNTRY_ID_11= Belarus
; #COUNTRY_ID_12= Basmachi
; #COUNTRY_ID_13= Black
; #COUNTRY_ID_14= Bolivia
; #COUNTRY_ID_15= Borneo
; #COUNTRY_ID_16= Brazil
; #COUNTRY_ID_17= British Somaliland
; #COUNTRY_ID_18= Brunei
; #COUNTRY_ID_19= Bulgaria
; #COUNTRY_ID_20= Burma
; #COUNTRY_ID_21= Canada
; #COUNTRY_ID_22= Chile
; #COUNTRY_ID_23= China
; #COUNTRY_ID_24= Colombia
; #COUNTRY_ID_25= Crimean People's Republic
; #COUNTRY_ID_26= Costa Rica
; #COUNTRY_ID_27= Croatia
; #COUNTRY_ID_28= Cuba
; #COUNTRY_ID_29= Curaçao
; #COUNTRY_ID_30= Czechoslovakia
; #COUNTRY_ID_31= Denmark
; #COUNTRY_ID_32= Don Republic
; #COUNTRY_ID_33= Dutch East Indies
; #COUNTRY_ID_34= Dutch Guiana
; #COUNTRY_ID_35= Ecuador
; #COUNTRY_ID_36= Egypt
; #COUNTRY_ID_37= El Salvador
; #COUNTRY_ID_38= Estonia
; #COUNTRY_ID_39= Finland
; #COUNTRY_ID_40= France
; #COUNTRY_ID_41= Free City of Danzig
; #COUNTRY_ID_42= French Equatorial Africa
; #COUNTRY_ID_43= French Somaliland
; #COUNTRY_ID_44= French West Africa
; #COUNTRY_ID_45= Germany
; #COUNTRY_ID_46= Greece
; #COUNTRY_ID_47= Greenland
; #COUNTRY_ID_48= Guatemala
; #COUNTRY_ID_49= Haiti
; #COUNTRY_ID_50= Honduras
; #COUNTRY_ID_51= Hong Kong
; #COUNTRY_ID_52= Hungary
; #COUNTRY_ID_53= Iceland
; #COUNTRY_ID_54= India
; #COUNTRY_ID_55= Indochina
; #COUNTRY_ID_56= Mesopotamia
; #COUNTRY_ID_57= Ireland
; #COUNTRY_ID_58= Italian East Africa
; #COUNTRY_ID_59= Italy
; #COUNTRY_ID_60= Japan
; #COUNTRY_ID_61= Latvia
; #COUNTRY_ID_62= Liberia
; #COUNTRY_ID_63= Libya
; #COUNTRY_ID_64= Lithuania
; #COUNTRY_ID_65= Luxembourg
; #COUNTRY_ID_66= Malaya
; #COUNTRY_ID_67= Kazan
; #COUNTRY_ID_68= Mexico
; #COUNTRY_ID_69= Mongolia
; #COUNTRY_ID_70= Morocco
; #COUNTRY_ID_71= Kuban People's Republic
; #COUNTRY_ID_72= Nepal
; #COUNTRY_ID_73= Netherlands
; #COUNTRY_ID_74= New Zealand
; #COUNTRY_ID_75= Newfoundland
; #COUNTRY_ID_76= Nicaragua
; #COUNTRY_ID_77= Northern Caucasus
; #COUNTRY_ID_78= Norway
; #COUNTRY_ID_79= Palestine
; #COUNTRY_ID_80= Panama
; #COUNTRY_ID_81= Paraguay
; #COUNTRY_ID_82= Persia
; #COUNTRY_ID_83= Peru
; #COUNTRY_ID_84= Philippines
; #COUNTRY_ID_85= Poland
; #COUNTRY_ID_86= Polynesia
; #COUNTRY_ID_87= Portugal
; #COUNTRY_ID_88= Portuguese East Africa
; #COUNTRY_ID_89= Portuguese Timor
; #COUNTRY_ID_90= Portuguese West Africa
; #COUNTRY_ID_91= Red
; #COUNTRY_ID_92= Rhodesia
; #COUNTRY_ID_93= Romania
; #COUNTRY_ID_94= Serbia
; #COUNTRY_ID_95= Saudi Arabia
; #COUNTRY_ID_96= Slovakia
; #COUNTRY_ID_97= Russia
; #COUNTRY_ID_98= South Africa
; #COUNTRY_ID_99= Spain
; #COUNTRY_ID_100= Spanish Guinea
; #COUNTRY_ID_101= Montenegro
; #COUNTRY_ID_102= Sudan
; #COUNTRY_ID_103= Sweden
; #COUNTRY_ID_104= Switzerland
; #COUNTRY_ID_105= Syria
; #COUNTRY_ID_106= Tannu Tuva
; #COUNTRY_ID_107= Thailand
; #COUNTRY_ID_108= Tibet
; #COUNTRY_ID_109= Transjordan
; #COUNTRY_ID_110= Tunisia
; #COUNTRY_ID_111= Ottoman Empire
; #COUNTRY_ID_112= UK
; #COUNTRY_ID_113= Ukraine
; #COUNTRY_ID_114= Uruguay
; #COUNTRY_ID_115= USA
; #COUNTRY_ID_116= USSR
; #COUNTRY_ID_117= Venezuela
; #COUNTRY_ID_118= Transcaucasian Federation
; #COUNTRY_ID_119= Yemen
; #COUNTRY_ID_120= Yugoslavia
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; EDGE REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NORTH= 1
; NORTH_EAST= 2
; SOUTH_EAST= 3
; SOUTH= 4
; SOUTH_WEST= 5
; NORTH_WEST= 6

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TACTICAL ID REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; ANY= 0
; LAND= 1
; AIR= 2
; NAVAL= 3
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; POLITICAL ALIGNMENT REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; NEUTRAL= 0
; AXIS= 1
; ALLIED= 2
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SURRENDERED FLAG REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; NOT_SURRENDERED= 0
; SURRENDERED= 1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

